package com.itheima.edu.info.manager.dao;

import com.itheima.edu.info.manager.domain.Student;

/*
    库管类
        1. 核心职责是管理我们的数据仓库--数组：增删改查
        2. 这里的所有方法【功能】都是给业务员用
 */
public class StudentDao implements BaseStudentDao{
    // 创建一个长度为5的学生对象数组
    private static Student[] stus = new Student[5];

    static {
        Student s1 = new Student("001","张三","23","1998-01-01");
        Student s2 = new Student("002","李四","24","1997-02-02");

        stus[0]=s1;
        stus[1]=s2;
    }
    // 添加学生方法
    public boolean addStudent(Student stu) {

        // 先定义一个变量index为-1,假设数组已经存满,元素中没有null
        int index = -1;
        // 遍历数组,取出每一个元素,判断是否是null
        for (int i = 0; i < stus.length; i++) {
            Student student = stus[i];
            if (student == null) {
                // 如果为null,变量index记录当前索引位置,并且结束循环遍历
                index = i;
                break;
            }
        }
        // 返回是否添加成功的boolean类型状态
        if (index == -1) {
            return false;
        } else {
            stus[index] = stu;
            return true;
        }
    }

    // 查看所有学生对象并返回
    public Student[] findAllStudent() {
        return stus;
    }

    //删除学生
    public void deleteStudent(String deleteId) {
        int index = getIndex(deleteId);
        stus[index]=null;

    }

    public int getIndex(String deleteId) {
        int index = -1;
        for (int i = 0; i < stus.length; i++) {
            Student stu = stus[i];
            if(stu != null && stu.getId().equals(deleteId)){
                index = i;
                break;
            }
        }
        return index;
    }

    public void updateStudent(String updateId, Student newStu) {
        // 1. 查找updateId, 在容器中的索引位置
        int index = getIndex(updateId);
        // 2. 将该索引位置, 使用新的学生对象替换
        stus[index] = newStu;
    }
}
